let module = Process.findModuleByName('MTPotal')
let base = module.base
console.log(`base = ${base}`)

// Interceptor.attach(base.add(0x11BBB74), {
//     onLeave(retval){
//         retval.replace(0);
//     }
// })
// Interceptor.attach(base.add(0x106BFCC), {
//     onLeave(retval){
//         retval.replace(0);
//     }
// })
// Memory.scan(base, module.size, new MatchPattern('CA B5 82 72'), {
//     onMatch(add, size){
//         console.log(add.sub(base).add(0x100000000));
//         console.log(hexdump(add, {length:0x10}))
//     }
// })
// setImmediate(function() {
//     var scanSync = Memory.scanSync(module.base, module.size, '6B ?? ?? ?? 54 ?? ?? ?? 12 ?? ?? ?? 11 ?? ?? ?? 4A ?? ?? ?? 71');
//     console.log("scanSync:", scanSync.length);
//     console.log("scanSync:"+JSON.stringify(scanSync));
//     scanSync.forEach(e=>{
//         let add = e.address;
//         console.log(`add = ${add.sub(base).add(0x100000000).add(1)}`);
//         let d = add.add(1);
//         let c = Instruction.parse(d);
//         console.log(`c = ${c}`)
//         // if (c.mnemonic === 'b.eq'){
//         //     // let eqAddr = ptr(c.opStr.substring(1,)).sub(base);
//         //     // console.log('c.next = ', c.next);
//         //     // let cnext = Instruction.parse(c.next)
//         //     // console.log('cnext = ', cnext);
//         //     // if (cnext.mnemonic == 'and') {
//         //     // //     console.log('change', ptr(c.opStr.substring(1,)))
//         //     // //     Memory.patchCode(d, 4, code => {
//         //     // //         const cw = new Arm64Writer(code);
//         //     // //         // cw.putBImm(ptr(c.opStr.substring(1,)));
//         //     // //         // cw.flush()
//         //     // //         console.log('\t', Instruction.parse(d))
//         //     // //     })
//         //     // //
//         //     // }else{
//         //     //     console.log('c.next !== and')
//         //     // }
//         //
//         //
//         //         Memory.patchCode(d, 4, code => {
//         //             const cw = new Arm64Writer(code);
//         //             // cw.putBImm(ptr(c.opStr.substring(1,)));
//         //             // cw.flush()
//         //             console.log('\t', Instruction.parse(d))
//         //         })
//         // }
//     })
//
// }, 0)


// scanSync = Memory.scanSync(module.base, module.size, 'DF 01  00 91 00 02  1F D6')
// scanSync.forEach(e=>{
//     let add = e.address;
//     console.log(`br = ${add.sub(base).add(0x100000000).add(1)}`);
// })
// Memory.scan(base, module.size, new MatchPattern('88 02 18 36'), {
//     onMatch: function (address, size) {
//         console.log('match', address.sub(base).add(0x100000000), size, address.sub(base).add(0x100000000));
//         let b = address;
//         let c = Instruction.parse(b);
//         if (c.mnemonic == 'tbz') {
//             Memory.patchCode(b, 4, code => {
//                 const cw = new Arm64Writer(code, {pc: ptr(b)});
//                 cw.putBImm(b.add(0x50));
//                 cw.flush()
//             })
//         }
//     },
//     onComplete: function () {
//         console.log('scan complete');
//     }
// });


// // pass 0xb5a96000 check 0xb5a06000
// Memory.scan(base, module.size, '65 03 11', {
//     onMatch(address, size) {
//         console.log('match4', address, address.sub(1).sub(base).add(0x100000000));
// //         // console.log('\tnext',Instruction.parse(address.sub(5)))
// //         // console.log('\tnext',Instruction.parse(address.sub(9)))
// //         let b = address.sub(9)
// //         // console.log('bb', b.sub(base).add(0x100000000))
// //         // let c = Instruction.parse(b);
// //         // if (c.mnemonic == 'b.eq'){
// //         //     // console.log('....', c,'||', c.next)
// //         //     let cnext = Instruction.parse(c.next)
// //         //     // console.log('next', cnext)
// //         //     if (cnext.mnemonic == 'and'){
// //         //         let eqAddr = ptr(c.opStr.substring(1,)).sub(base);
// //         //         // console.log('\t',eqAddr)
// //         //         // console.log('\t',b.sub(0x70), ptr(c.opStr.substring(1,)))
// //         //         Memory.patchCode(b, 4, code=>{
// //         //             const cw = new Arm64Writer(code, {pc: ptr(b)});
// //         //             cw.putBImm(ptr(c.opStr.substring(1,)));
// //         //             cw.flush()
// //         //             // console.log('\t',Instruction.parse(b))
// //         //         })
// //         //     }
// //         // }
//     }
// })
